功能1:个股价格趋势与技术分析

  绘制日K线图,添加交易量、MACD、SMA指标

000001.SS.Open 000001.SS.High 000001.SS.Low 000001.SS.Close 000001.SS.Volume 000001.SS.Adjusted
2907.74 2917.37 2899.62 2909.87 129100 2909.87
2911.35 2917.83 2891.20 2891.34 135500 2891.34
2889.55 2911.38 2884.09 2909.20 124400 2909.20
2904.28 2933.99 2902.86 2933.99 135400 2933.99
2928.11 2930.49 2907.42 2911.05 137400 2911.05
2902.55 2910.36 2891.53 2903.64 123500 2903.64
2906.24 2925.02 2873.99 2885.29 158600 2885.29
2885.61 2906.61 2880.65 2906.17 178600 2906.17

功能2:市场总体表现

  市场涨跌幅,新高、新低,SMA50、SMA100表现

功能2.1:涨跌统计

  交易日内上涨/下跌股票数

TradeStock=read.delim(paste(path,"function2.1.txt",sep='/'),header=T)
#数据:function2.1.txt
#数据来源:RESSET数据库——RESSET 股票——行情与分配——股票最新行情表现
#stkcd           股票代码            Stock Code
#lstknm          最新股票名称        Latest Stock Name
#trddt           日期                Trade Date
#prevclpr        前收盘价            Previous Close Price
#clpr            收盘价              Close Price
#clloprrec12mon  十二个月收盘最低价  Close Low Price Recent 12 Month
#clhiprrec12mon  十二个月收盘最高价  Close High Price Recent 12 Month
#计算涨跌
table1<-TradeStock%>%
  mutate(result=clpr-prevclpr)%>%
  mutate(position=(if_else(result>0,'Advancing',if_else(result==0,'Steady','Decining'))))%>%
  mutate(value=1)
#定义标识向量
color<-c('darkred','grey','darkgreen')
symbol<-c('Advancing','Steady','Declining')
#统计涨跌数与比例
a <- transform(table1,trend=if_else(result>0,1,if_else(result<0,-1,0)))
b <- ddply(a,"trend",summarise,number=length(lstknm))
c<-ddply(b,'number',.fun=function(x){transform(x, percentage=with(x,ave(number,trend,FUN=sum)*100/sum(b$number)))})
percentage<-paste(round(as.numeric(as.character(c$percentage)),1),'%',sep='')
df<-data.frame(symbol,number=c(b$number[3],b$number[2],b$number[1]),percentage=c(percentage[3],percentage[1],percentage[2]),value=c(1,1,1))
df<-data.frame(df,label=paste(df$number,df$symbol,sep=' '))
df$symbol<-factor(df$symbol,levels=symbol)
#绘制涨跌情况分布图
ggplot(df,aes(x=df$value,y=df$number,fill=symbol)) +
  scale_fill_manual(values = color)+
  geom_bar(stat='identity',position = position_stack(reverse=T))+#堆叠图
  geom_text(label=levels(df$percentage),position = position_stack(0.0),vjust=0.3, hjust =-3.8,color="white", size=3.8,check_overlap = TRUE)+
  geom_text(label=levels(df$label),position = position_stack(0.0),vjust=-1.5, hjust =-1,color="black", size=4,check_overlap = TRUE)+
  theme_minimal()+
  coord_flip()+ #横向 
  labs(x='',y='')+
  theme(legend.position='none')+  
  theme(panel.grid = element_blank())+
  theme(axis.text = element_blank())+
  ggtitle("Advancing / Declining") +
  xlim(-4,4)


功能2.2:新高、新低统计

  交易日内股票价格达新高/新低的股票数

#计算New high&New low
table2<-TradeStock%>%
  mutate(position=(if_else(TradeStock$clpr==TradeStock$clhiprrec12mon,'New High',if_else(TradeStock$clpr==TradeStock$clloprrec12mon,'New Low','Null'))))%>%
  mutate(value=1)
#重新定义标识
color<-c('darkred','darkgreen')
symbol<-c('New High','New Low')
#统计新高新低情况
a <- transform(table2,trend=if_else(TradeStock$clpr==TradeStock$clhiprrec12mon,1,if_else(TradeStock$clpr==TradeStock$clloprrec12mon,-1,0)))
b <- ddply(a,"trend",summarise,number=length(lstknm))
b<-b[-2,]
c<-ddply(b,'number',.fun=function(x){transform(x, percentage=with(x,ave(number,trend,FUN=sum)*100/sum(b$number)))})
df<-data.frame(symbol,number=c$number,percentage=c$percentage,value=c(1,1))
percentage<-round(as.numeric(as.character(c$percentage)),1)
percentage<-paste(percentage,'%',sep='')
df<-data.frame(symbol,number=df$number,percentage=percentage,value=c(1,1))
df<-data.frame(df,label=paste(df$number,df$symbol,sep=' '))
#绘制新高新低图
ggplot(df,aes(x=df$value,y=df$number,fill=symbol)) +
  scale_fill_manual(values = color)+
  geom_bar(stat='identity',position = position_stack(reverse=T))+
  geom_text(label=df$percentage,position = position_stack(0.5),color="white", size=4,check_overlap = TRUE)+
  geom_text(label=df$label,position = position_stack(0.5),vjust=-1.5,color="black", size=4,check_overlap = TRUE)+
  theme_minimal()+
  coord_flip()+ 
  labs(x='',y='')+
  theme(legend.position='none')+ 
  theme(panel.grid = element_blank())+
  theme(axis.text = element_blank())+
  ggtitle("New High / New Low") +
  xlim(-4,4)


功能2.3:日均线分析

  交易日内股票价格高于/低于移动平均线(SMA)的股票数

table3=read.delim(paste(path,"function2.2.txt",sep='/'),header=T)
#数据:function2.2.txt
#数据来源:RESSET数据库——RESSET 股票——股票综合数据——日股票综合数据
#stkcd      股票代码     Stock Code
#lstknm      最新股票名称     Latest Stock Name
#date      日期     Date
#clpr      收盘价     Close Price
#对数据进行重新排序
setcolorder(table3,c('date','stkcd','lstknm','clpr'))
table3<-table3[complete.cases(table3$clpr),]
#计算50日与100均值
table3<-table3%>%
  mutate(SMA1=SMA(table3$clpr,n=50))%>%
  mutate(SMA2=SMA(table3$clpr,n=100))
symbol<-c('Above','Below')
SMA50<-table3[,-7]%>%
  filter(date=='2019-09-30')
SMA100<-table3[,-6]%>%
  filter(date=='2019-09-30')
##50日均线
a <- transform(SMA50,trend=if_else(SMA50$clpr>SMA50$SMA1,1,if_else(SMA50$clpr<SMA50$SMA1,-1,0)))
b <- ddply(a,"trend",summarise,number=length(lstknm))
c<-ddply(b,'number',.fun=function(x){transform(x, percentage=with(x,ave(number,trend,FUN=sum)*100/sum(b$number)))})
df<-data.frame(symbol,number=c$number,percentage=c$percentage,value=c(1,1))
percentage<-round(as.numeric(as.character(c$percentage)),1)
percentage<-paste(percentage,'%',sep='')
df<-data.frame(symbol,number=df$number,percentage=percentage,value=c(1,1))
df<-data.frame(df,label=paste(df$number,df$symbol,sep=' '))
#绘制SMA50统计情况
ggplot(df,aes(x=df$value,y=df$number,fill=symbol)) +
  scale_fill_manual(values = color)+
  geom_bar(stat='identity',position = position_stack(reverse=T))+
  geom_text(label=levels(df$percentage),position = position_stack(0.2),color="white", size=3.7,check_overlap = TRUE)+
  geom_text(label=levels(df$label),vjust=-1.5, position = position_stack(0.2),color="black", size=4,check_overlap = TRUE)+
  theme_minimal()+
  coord_flip()+ 
  labs(x='',y='')+
  theme(legend.position='none')+  
  theme(panel.grid = element_blank())+
  theme(axis.text = element_blank())+
  ggtitle("SMA50") +
  xlim(-4,4)


功能3:不同signal内股票表现

不同分类标识(signal):
 (1)Top Gainers,Top Losers:当日收益率为最高或最低
 (2)New High,New Low:股票价格达到一年内新高或新低
 (3)Overbought,Oversold:股票价格上涨或下跌幅度高于前两周
 (4)Unusual Volume:存在异常高交易量的股票
    Most Volatile:最具波动性的股票
    Most Active:交易最活跃的股票

signal=read.delim(paste(path,"function3.1.txt",sep='/'),header=T)
#数据:function3.1.txt
#数据来源:RESSET数据库——RESSET 股票——行情与分配——股票最新行情表现
#stkcd      股票代码     Stock Code
#lstknm      最新股票名称     Latest Stock Name
#trddt      交易日     Trading Date
#clpr      收盘价     Close Price
#trdvol      成交量     Trading Volume
#chgpct      涨跌幅     Change Percent
#clhiprrec12mon      十二个月收盘最高价     Highest Close Price in the Recent 12 Months
#clloprrec12mon      十二个月收盘最低价     Lowest Close Price in the Recent 12 Months
###分类标识1:Top Gainers&Top Losers
signal1<-data.frame(signal)%>%
  arrange(desc(chgpct))
table<-select(signal1,Ticker='lstknm',Last='clpr',Change='chgpct',Volume='trdvol')
table$Change<-paste(table$Change,'%',sep='')
table1<-first(table,n=6)%>%
mutate(signal="Top Gainers")
table2<-last(table,n=6)%>%
  mutate(signal="Top Losers")
###分类标识2:New High&New Low
signal2<-signal%>%
  mutate(position=(if_else(signal$clpr==signal$clhiprrec12mon,'New High',if_else(signal$clpr==signal$clloprrec12mon,'New Low','Null'))))%>%
  arrange(position,desc(chgpct))
signal2<-filter(signal2,signal2$position=='New High'|signal2$position=='New Low')
table<-select(signal2,Ticker='lstknm',Last='clpr',Change='chgpct',Volume='trdvol',signal='position')
table$Change<-paste(table$Change,'%',sep='')
table1<-rbind(table1,table[1:4,])
table2<-rbind(table2,last(table,n=4))
###分类标识3:Overbought&Oversold
sign=read.delim(paste(path,"function3.2.txt",sep='/'),header=T)
#数据:function3.2.txt
#数据来源:RESSET数据库——RESSET 股票——股票综合数据——日股票综合数据
#stkcd      股票代码     Stock Code
#lstknm      最新股票名称     Latest Stock Name
#date      日期     Date
#clpr      收盘价     Close Price
setcolorder(sign,c('date','stkcd','lstknm','clpr'))
sign<-sign[complete.cases(sign$clpr),]
sign<-sign%>%
  mutate(RSI=RSI(sign$clpr,n=14,maType = SMA))%>%
  filter(date=='2019-09-30')%>%
  inner_join(signal,sign,by='stkcd')%>%
  arrange(desc(RSI))
table<-select(sign,Ticker='lstknm.y',Last='clpr.y',Change='chgpct',Volume='trdvol')
table$Change<-paste(table$Change,'%',sep='')
table1<-rbind(table1,(first(table,n=2)%>%mutate(signal='Overbought')))
table2<-rbind(table2,(last(table,n=2)%>%mutate(signal='Oversold')))
###分类标识4:Unusual Volume&Most Volatile&Most Active
#由于我国交易存在涨跌幅限制,所以异常交易量不按高位异常判断,仅按高交易低收益判断

signal3<-signal%>%
  arrange(desc(trdvol))%>%
  filter(chgpct<1&chgpct>-1)
table<-select(signal3,Ticker='lstknm',Last='clpr',Change='chgpct',Volume='trdvol')
table$Change<-paste(table$Change,'%',sep='')
table1<-rbind(table1,(table[1:4,]%>%mutate(signal='Unusual Volume')))

sign=read.delim(paste(path,"function3.3.txt",sep='/'),header=T)
#数据:function3.3.txt
#数据来源:RESSET数据库——RESSET 股票——股票综合数据——日股票综合数据
#stkcd      股票代码     Stock Code
#lstknm      最新股票名称     Latest Stock Name
#hipr      最高价     Highest Price
#lopr      最低价     Lowest Price
sign<-sign%>%
  mutate(result=sign$hipr-sign$lopr)%>%
  inner_join(signal,sign,by='stkcd')%>%
  arrange(desc(result))
table<-select(sign,Ticker='lstknm.y',Last='clpr',Change='chgpct',Volume='trdvol')
table$Change<-paste(table$Change,'%',sep='')
table2<-rbind(table2,(table[1:2,]%>%mutate(signal='Most Volatile')))
signal4<-signal%>%
  arrange(desc(trdvol))
table<-select(signal4,Ticker='lstknm',Last='clpr',Change='chgpct',Volume='trdvol')
table$Change<-paste(table$Change,'%',sep='')
table2<-rbind(table2,(table[1:2,]%>%mutate(signal='Most Active')))

#合并表
table1<-mutate(table1,Index=c(1:16))
table2<-mutate(table2,Index=c(1:16))
table<-inner_join(table1,table2,by='Index')
table<-table[,-6]
#table
kable(table,table.attr = "class=\"table table-bordered\"", align="c",booktabs=T)
Ticker.x Last.x Change.x Volume.x signal.x Ticker.y Last.y Change.y Volume.y signal.y
银鸽投资 2.70 10.2041% 2799.1713 Top Gainers 上海电影 17.09 -10.0053% 419.0767 Top Losers
星辉娱乐 5.12 10.1075% 1454.6090 Top Gainers 五方光电 40.02 -10.0067% 1508.5420 Top Losers
智慧松德 4.80 10.0917% 600.9503 Top Gainers 威派格 20.41 -10.0088% 1827.4715 Top Losers
金石东方 8.42 10.0654% 540.6497 Top Gainers 智能自控 8.36 -10.0108% 3020.2606 Top Losers
大烨智能 9.85 10.0559% 727.5684 Top Gainers 多喜爱 8.00 -10.0112% 2175.5109 Top Losers
大金重工 6.02 10.0548% 1734.4795 Top Gainers 亿通科技 7.53 -10.0358% 3377.8287 Top Losers
大金重工 6.02 10.0548% 1734.4795 New High 华信退 0.21 -4.5455% 4141.1512 New Low
天顺股份 26.68 10.0206% 573.4560 New High *ST信威 1.41 -4.7297% 7118.2518 New Low
乐歌股份 33.17 10.0166% 1248.7043 New High 仙乐健康 69.80 -9.6674% 466.0393 New Low
京华激光 24.72 10.0134% 974.8664 New High 海普瑞 16.74 -10% 1082.0200 New Low
中科软 79.61 -10.0045% 2251.3497 Overbought 华能国际 5.82 0.3448% 1554.9206 Oversold
宝鼎科技 21.32 10.0103% 1726.4365 Overbought 华信退 0.21 -4.5455% 4141.1512 Oversold
京东方A 3.75 0% 29495.2562 Unusual Volume 卓胜微 337.46 -9.9987% 307.0333 Most Volatile
农业银行 3.48 0.578% 17250.7730 Unusual Volume 贵州茅台 1167.10 1.487% 310.4527 Most Volatile
工商银行 5.56 0.5425% 12531.7591 Unusual Volume 京东方A 3.75 0% 29495.2562 Most Active
东方财富 14.77 -0.0677% 11460.2966 Unusual Volume 光大银行 4.09 3.8071% 19113.3670 Most Active

功能4:绘制股票板块层级图

  按行业及细分行业分类,绘制板块层级图,个股板块颜色与涨跌有关(收益率低→高:绿-黑-红),板块大小与板块/股票市值成比例
注:行业分类
  按证监会行业(csrciccd1)进行分类:   A-农、林、牧、渔业;B-采矿业;C-制造业;D-电力、热力、燃气及水生产和供应业;E-建筑业;F-批发和零售业;G-交通运输、仓储和邮政业;H-住宿和餐饮业;I-信息传输、软件和信息技术服务业;J-金融业;K-房地产业;L-租赁和商务服务业;M-科学研究和技术服务业;N-水利、环境和公共设施管理业;O-居民服务、修理和其他服务业;P-教育;Q-卫生和社会工作;R-文化、体育和娱乐业;S-综合

#绘制板块层级图 tree map

#行业与收益率数据
DRET=read.delim(paste(path,"function4_DRESSTK.txt",sep='/'),header=T)
#数据:function4_DRESSTK.txt
#数据来源:RESSET数据库——RESSET 股票——股票综合数据——日股票综合数据
#stkcd      股票代码     Stock Code
#lstknm      最新股票名称     Latest Stock Name
#csrciccd1      证监会行业门类代码     First Level Code of Csrc Ic
#csrciccd2      证监会行业大类代码     Second Level Code of Csrc Ic
#dret      日收益率     Daily Return

#市值
DMV=read.delim(paste(path,"function4_DMV.txt",sep='/'),header=T)
#数据:function4_DMV.txt
#数据来源:RESSET数据库——RESSET 股票——市值——日市值
#stkcd      股票代码     Stock Code
#dmc      日总市值     Daily Market Capitalization
# 合并原始数据表
data_raw <- inner_join(DRET,DMV,by="stkcd")[c("stkcd","lstknm","csrciccd1","csrciccd2","dret","dmc")]

#行业名称
#数据:function4_CSRCIND.txt
#数据来源:RESSET数据库——RESSET 股票——股票综合数据——日股票综合数据
CSRCIND <- read.delim(paste(path,"function4_CSRCIND.txt",sep='/'),header=T) %>%
  subset(select=c(csrciccd1,csrcicnm1,csrciccd2,csrcicnm2)) %>%
  unique()
CSRCIND <- CSRCIND[order(CSRCIND$csrciccd2),] %>% subset(select=-csrciccd1)
data_raw=merge(data_raw,CSRCIND,by="csrciccd2")

#(1)全市场各行业板块层级图:区分行业大门类内细分行业收益与市值分布
#细分行业收益使用市值加权收益率
industry2_dret <- ddply(data_raw,"csrciccd2",summarize,wm_dret=weighted.mean(dret, dmc),sum_mv=sum(dmc))
data_map_ind <- merge(industry2_dret,unique(data_raw[c("csrciccd1","csrciccd2","csrcicnm1","csrcicnm2")]),by="csrciccd2",all.industry2_dret=T,all.data_raw=F)
map.market(id = data_map_ind$csrcicnm2,
           area = data_map_ind$sum_mv,  #面积与市值成比例
           group = data_map_ind$csrcicnm1, #按行业门类分类
           lab   = c("group"=TRUE, "id"=TRUE),
           color = data_map_ind$wm_dret)


功能5:绘制股票行业收益分布气泡图

  一个气泡代表一只股票,纵轴(气泡圆心位置)表示涨跌幅,气泡大小为市值,横轴为不同行业(sector),不同行业也以颜色区分。


功能6:各行业收益表现统计与比较

  各行业收益统计排名(行业收益率=行业内所有股票的市值加权收益率)。


功能7: 行业表现——估值

  行业表现统计:股票数、总市值、PE、行业涨跌幅、交易量。

#行业与PE数据
PE=read.delim(paste(path,"function7.1.txt",sep='/'),header=T)
#数据:function7.1.txt
#数据来源:RESSET数据库——RESSET 股票——市盈率——行业市盈率_2001年证监会行业标准——证监会门类行业市盈率
#csrciccd1      证监会行业门类代码     First Level Code of Csrc Ic
#csrcicnm1      证监会行业门类名称     First Level Name of Csrc Ic
#peratio_ind      行业市盈率     Price-to-earning Ratio of Industry
#comnum      公司数     Company Number
#行业与市值数据
DMV=read.delim(paste(path,"function7.2.txt",sep='/'),header=T)
#数据:function7.2.txt
#数据来源:RESSET数据库——RESSET 股票——市值——行业市值——证监会门类行业日市值
#csrciccd1      证监会行业门类代码     First Level Code of Csrc Ic
#dmc_ind      行业日总市值     Industry Daily Market Capitalization
stock=read.delim(paste(path,"function7.3.txt",sep='/'),header=T)
#数据:function7.3.txt
#数据来源:RESSET数据库——RESSET 股票——股票综合数据——日股票综合数据
#csrciccd1      证监会行业门类代码     First Level Code of Csrc Ic
#csrciccd2      证监会行业大类代码     Second Level Code of Csrc Ic
#trdvol      成交量     Trading Volume
#dret      日收益率     Daily Return
stock<-stock[complete.cases(stock$trdvol),]%>%
  arrange(csrciccd1)
Volume<-tapply(stock$trdvol,factor(stock$csrciccd1),sum)
Change<-paste(round((tapply(stock$dret,factor(stock$csrciccd1),sum)/PE$comnum*100),2),'%',sep='')
table<-data.frame(No.=PE$csrciccd1,Name=PE$csrcicnm1,Stock=PE$comnum,MarketCap=DMV$dmc_ind,PE=PE$peratio_ind,Change,Volume)
kable(table,align='c',table.attr = "class=\"table table-bordered\"",row.names = F)
No. Name Stock MarketCap PE Change Volume
A 农、林、牧、渔业 28 5.986141e+11 49.94318 -0.38% 295318045
B 采矿业 57 2.885867e+12 32.82132 -0.62% 838374817
C 制造业 1834 2.490448e+13 41.17643 -1.29% 17196475537
D 电力、热力、燃气及水生产和供应业 89 1.834393e+12 28.00934 -0.91% 760056457
E 建筑业 79 1.240129e+12 29.73125 -0.52% 604308041
F 批发和零售业 140 1.371152e+12 30.73715 -1.06% 1102022496
G 交通运输、仓储和邮政业 102 1.947999e+12 25.76380 -0.63% 692739146
H 住宿和餐饮业 6 5.699310e+10 38.48962 -0.81% 18216630
I 信息传输、软件和信息技术服务业 205 2.876675e+12 58.73034 -2.27% 3104413447
J 金融业 93 1.169169e+13 28.54970 -2.3% 2635393104
K 房地产业 110 1.984861e+12 22.12447 -0.74% 868452256
L 租赁和商务服务业 38 6.038786e+11 40.67764 -2.12% 449408713
M 科学研究和技术服务业 46 4.080111e+11 42.82365 -1.09% 192840594
N 水利、环境和公共设施管理业 47 2.956607e+11 33.91224 -1.28% 236279053
P 教育 5 1.387080e+11 89.49023 -0.34% 30362179
Q 卫生和社会工作 7 3.060222e+11 85.60898 1.49% 145755367
R 文化、体育和娱乐业 38 5.442433e+11 34.91395 -2.48% 563360723
S 综合 12 1.206573e+11 44.30693 -1.64% 137571809

功能9:绘制细分行业内个股收益月度每日热度图

  绘制一个月内各交易日的行业涨跌热度图,收益率低→高:绿-黑-红。

Return=read.delim(paste(path,"function9.1.txt",sep='/'),header=T)
#数据:function9.1.txt
#数据来源:RESSET数据库——RESSET 股票——股票综合数据——日股票综合数据
#comcd      上市公司代码     Listed Company Code
#csrciccd1      证监会行业门类代码     First Level Code of Csrc Ic
#csrciccd2      证监会行业大类代码     Second Level Code of Csrc Ic
#date      日期     Date
#dret      日收益率     Daily Return
DMV=read.delim(paste(path,"function9.2.txt",sep='/'),header=T)
#数据:function9.2.txt
#数据来源:RESSET数据库——RESSET 股票——市值——日市值
#comcd      上市公司代码     Listed Company Code
#csrciccd1      证监会行业门类代码     First Level Code of Csrc Ic
#csrciccd2      证监会行业大类代码     Second Level Code of Csrc Ic
#date      日期     Date
#dmc      日总市值     Daily Market Capitalization
data_1<-inner_join(Return,DMV,by=c('comcd','date','csrciccd1'))%>%
  select('comcd','date','csrciccd1','dret','dmc')
# 添加行业名
CSRCIND <- read.delim(paste(path,"function4_CSRCIND.txt",sep='/'),header=T) %>%
  subset(select=c(csrciccd1,csrcicnm1)) %>%
  unique()
# 与行业合并
data_1<-merge(data_1,CSRCIND,by="csrciccd1")
data_1$dret<-as.numeric(as.character(data_1$dret))
#处理异常值,降低异常收益对热度图整体颜色区分度的影响
data_1$dret[!( data_1$dret>=-1 & data_1$dret<=1 )]<-NA
data_1<-data_1[complete.cases(data_1$dret),]%>%
  mutate(dret_1=dret*dmc)
a<-tapply(data_1$dmc,list(factor(data_1$date),factor(data_1$csrcicnm1)),sum)
b<-tapply(data_1$dret_1,list(factor(data_1$date),factor(data_1$csrcicnm1)),sum)
industry_dret<-t(as.matrix(round(b/a*100,0)))
#breaks
bk <- c(seq(-6,-0.1,by=0.01),seq(0,6,by=0.01))
pheatmap(industry_dret,cluster_rows = F,cluster_cols = F,show_rownames=T,
         border_color ='grey',
         color = c(colorRampPalette(colors = c("green","black"))(length(bk)/2),colorRampPalette(colors = c("black","red"))(length(bk)/2)),
         legend_breaks=seq(-6,6,2), breaks=bk,
         display_numbers = industry_dret,legend = T)


功能10:期货收益率排名统计

  绘制不同标的资产的期货收益率排名条形图,收益率低→高:绿-黑-红。

future=read.delim(paste(path,"function10.txt",sep='/'),header=T)
#数据:function10.txt
#数据来源:RESSET数据库——RESSET 期货——期货交易行情——期货行情表
#enddt      截止日期     End Date
#contnm      合约名称     Contract Name
#conflg      连续标志     Continuum Flag
#contudl      合约标的     Contract Underlying
#contudlnm      合约标的名称     Contract Underlying Name
#clpr      收盘价     Close Price
#trdvol      成交量     Trade Volume
#trdsum      成交额     Trade Sum
#各股指期货收益率统计
future<-future[complete.cases(future$clpr),]
#2019-09-26期货收益率
future1<-future%>%
  filter(future$enddt=='2019-09-26')
future1<-future1[!duplicated(future1$contnm), ]#去除重复值
#2019-09-27期货收益率
future2<-future%>%
  filter(future$enddt=='2019-09-27')
future2<-future2[!duplicated(future2$contnm), ]
future<-inner_join(future1,future2,by='contnm')%>%
  select(contudlnm='contudlnm.x',p_clpr='clpr.x',clpr='clpr.y',exchnm='exchnm.x')
#选取在上海交易所交易的期货
future<-future%>%
  filter(future$exchnm=='上海期货交易所')
#计算涨跌幅
future<-mutate(future,dret=(future$clpr-future$p_clpr)/future$p_clpr)
future<-future[complete.cases(future$dret),]
future<-future[with(future,order(dret)),]
#绘制期货收益率图
plot10 <- ggplot(future, mapping=aes(x=reorder(contudlnm,dret),y=dret))+
  geom_bar(stat="identity",width=0.7,fill=colorRampPalette(c("darkgreen","darkred"))(16))+
  theme(panel.background=element_rect(fill='transparent')) +
  geom_text(mapping = aes(label = round(future$dret, digits = 4)),size=3,vjust=0.5,hjust=1) +
  ggtitle("1 DAY RELATIVE PERFORMANCE") +
  labs(y = "1-day Return",x="Index") +
  coord_flip() 
ggplotly(plot10)

功能11:外汇汇率收益率

  绘制外汇涨跌幅排名柱状图,收益率低→高:绿-黑-红。